/**
 * Created by henian.xu on 2017/7/5 0005.
 * jquery插件开发模板
 */

define(
    [
        'jquery'
    ],
    function ($) {
        var
            plugName = 'plugName',
            plugVersion = '0.1.0',
            $doc = $(document);

        /**
         * 定义插件类构造函数
         * @param el
         * @param options
         */
        $[plugName] = function (el, options) {
            this.version = plugVersion;
            this.$target = $(el);
            this.$target.data('x-' + plugName, this);// 缓存实例对象
            var
                _super = this,
                cfg = $.extend(true, {}, $[plugName].defaults, options),
                methods = {};

            // 私有方法
            methods = {
                /**
                 * 插件初始化
                 */
                init: function () {
                    console.log('插件初始完成');
                },
            };
            methods.init();
        };

        // 公开方法
        var plugPro = $[plugName].prototype; // 简化原形

        /**
         * 注册插件
         * @param options
         * @returns {*}
         */
        $.fn[plugName] = function (options) {
            options = options || {};
            if ($.type(options) === 'object') {
                return this.each(function () {
                    var $plug = $(this).data('x-' + plugName);
                    if ($plug === undefined) {
                        new $[plugName](this, options);
                    } else {
                        // 实例对象已经存在
                    }
                });
            } else {
                // 其它参数类型
            }
        };

        // 默认设置
        $[plugName].defaults = {
            isAutoInit: false, // 是否自动初始化的
        };

        // 惰性实例化插件
        $doc.on('click', '', function (e) {
            var
                $this = $(this);
            if ($this.data('x-' + plugName) !== undefined)return;
            new $[plugName](this);
        });

        return $[plugName];
    }
);
